home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / CDTools / ClassAct / Examples / ClickTab / PageExample.c < prev    next >
C/C++ Source or Header  |  1997-07-09  |  11KB  |  435 lines

  1. ;/* Page Example
  2. sc link pageexample.c lib lib:classact.lib
  3. quit
  4. */
  5.  
  6. /**
  7.  **  PageExample.c -- Layout page gadget class Example.
  8.  **
  9.  **  This is a simple example testing some of the NEW capabilities
  10.  **  of the clicktab and page layout gadget class. Note, the
  11.  **  "embedded" page
  12.  **
  13.  **  Best viewed with TabSize = 2, or = 4.
  14.  **/
  15.  
  16. /* system includes
  17.  */
  18. #include <stdio.h>
  19. #include <stdlib.h>
  20. #include <string.h>
  21.  
  22. #include <exec/types.h>
  23. #include <exec/memory.h>
  24. #include <libraries/gadtools.h>
  25. #include <intuition/intuition.h>
  26. #include <intuition/gadgetclass.h>
  27. #include <graphics/gfxbase.h>
  28. #include <graphics/text.h>
  29. #include <graphics/gfxmacros.h>
  30. #include <utility/tagitem.h>
  31. #include <workbench/startup.h>
  32. #include <workbench/workbench.h>
  33.  
  34. #include <proto/intuition.h>
  35. #include <proto/graphics.h>
  36. #include <proto/exec.h>
  37. #include <proto/dos.h>
  38. #include <proto/utility.h>
  39. #include <proto/wb.h>
  40. #include <proto/icon.h>
  41.  
  42. /* ClassAct includes
  43.  */
  44. #include <classact.h>
  45.  
  46.  
  47. enum
  48. {
  49.     GID_MAIN=0,
  50.     GID_CLICKTAB,
  51.     GID_PAGE,
  52.  
  53.     GID_ALIGN1,
  54.     GID_ALIGN2,
  55.     GID_ALIGN3,
  56.  
  57.     GID_PAGELAY1,
  58.     GID_PAGELAY2,
  59.  
  60.     GID_COMPANY,
  61.     GID_LASTNAME,
  62.     GID_FIRSTNAME,
  63.     GID_ADD1,
  64.     GID_ADD2,
  65.     GID_CITY,
  66.     GID_STATE,
  67.     GID_ZIPCODE,
  68.     GID_PHONE,
  69.     GID_FAX,
  70.  
  71.     GID_CUSTOMERS,
  72.     GID_ORDERS,
  73.     GID_DETAILS,
  74.     GID_NEWORD,
  75.     GID_EDITORD,
  76.     GID_DELORD,
  77.  
  78.     GID_QUIT,
  79.     GID_LAST
  80. };
  81.  
  82. enum
  83. {
  84.     WID_MAIN=0,
  85.     WID_LAST
  86. };
  87.  
  88. enum
  89. {
  90.     OID_MAIN=0,
  91.     OID_LAST
  92. };
  93.  
  94.  
  95. int main(void)
  96. {
  97.     struct MsgPort *AppPort;
  98.  
  99.     struct Window *windows[WID_LAST];
  100.  
  101.     struct Gadget *gadgets[GID_LAST];
  102.  
  103.     Object *objects[OID_LAST];
  104.  
  105.     /* special case - reference buttonbase to make sure it autoinit!
  106.      */
  107.     if ( !ButtonBase )
  108.         return(30);
  109.     else if ( AppPort = CreateMsgPort() )
  110.     {
  111.         struct List *tablabels = ClickTabs("_Contacts","_Orders", NULL);
  112.  
  113.         if (tablabels)
  114.         {
  115.             /* Create the window object.
  116.              */
  117.             objects[OID_MAIN] = WindowObject,
  118.                 WA_ScreenTitle, "ClassAct Release 2.0",
  119.                 WA_Title, "ClassAct Page Example",
  120.                 WA_Activate, TRUE,
  121.                 WA_DepthGadget, TRUE,
  122.                 WA_DragBar, TRUE,
  123.                 WA_CloseGadget, TRUE,
  124.                 WA_SizeGadget, TRUE,
  125.                 WINDOW_IconifyGadget, TRUE,
  126.                 WINDOW_IconTitle, "Page",
  127.                 WINDOW_AppPort, AppPort,
  128.                 WINDOW_Position, WPOS_CENTERMOUSE,
  129.                 WINDOW_ParentGroup, gadgets[GID_MAIN] = VGroupObject,
  130.                     LAYOUT_DeferLayout, TRUE,
  131.                     LAYOUT_SpaceOuter, TRUE,
  132.                     LAYOUT_SpaceInner, TRUE,
  133.  
  134.                     LAYOUT_AddChild,  gadgets[GID_CLICKTAB] = ClickTabObject,
  135.                         GA_ID, GID_CLICKTAB,
  136.                         GA_RelVerify, TRUE,
  137.                         CLICKTAB_Labels, tablabels,
  138.  
  139.                         /* Embed the PageObject "inside" the Clicktab
  140.                          * the clicktab's beveling will surround the page.
  141.                          */
  142.                         CLICKTAB_PageGroup, gadgets[GID_PAGE] = PageObject,
  143.                             /* We will defer layout/render changing pages! */
  144.                             LAYOUT_DeferLayout, TRUE,
  145.  
  146.                             PAGE_Add, gadgets[GID_PAGELAY1] = VGroupObject,
  147.                                 LAYOUT_SpaceOuter, TRUE,
  148.                                 LAYOUT_SpaceInner, TRUE,
  149.  
  150.                                 LAYOUT_AddChild, gadgets[GID_COMPANY] = StringObject,
  151.                                     GA_ID, GID_COMPANY,
  152.                                     GA_RelVerify, TRUE,
  153.                                     GA_TabCycle, TRUE,
  154.                                     STRINGA_MaxChars, 48,
  155.                                     STRINGA_TextVal, "",
  156.                                 StringEnd,
  157.                                 CHILD_Label, LabelObject, LABEL_Text,"Company", LabelEnd,
  158.                                 CHILD_MinWidth, 200,
  159.  
  160.                                 LAYOUT_AddChild, gadgets[GID_ALIGN1] = HGroupObject,
  161.                                     LAYOUT_AddChild, gadgets[GID_LASTNAME] = StringObject,
  162.                                         GA_ID, GID_LASTNAME,
  163.                                         GA_RelVerify, TRUE,
  164.                                         GA_TabCycle, TRUE,
  165.                                         STRINGA_MaxChars, 48,
  166.                                         STRINGA_TextVal, "",
  167.                                     StringEnd,
  168.                                     CHILD_Label, LabelObject, LABEL_Text,"Last", LabelEnd,
  169.  
  170.                                     LAYOUT_AddChild, gadgets[GID_FIRSTNAME] = StringObject,
  171.                                         GA_ID, GID_FIRSTNAME,
  172.                                         GA_RelVerify, TRUE,
  173.                                         GA_TabCycle, TRUE,
  174.                                         STRINGA_MaxChars, 48,
  175.                                         STRINGA_TextVal, "",
  176.                                     StringEnd,
  177.                                     CHILD_Label, LabelObject, LABEL_Text,"First", LabelEnd,
  178.                                 LayoutEnd,
  179.                                 CHILD_WeightedHeight, 0,
  180.  
  181.                                 LAYOUT_AddChild, gadgets[GID_ADD1] = StringObject,
  182.                                     GA_ID, GID_ADD1,
  183.                                     GA_RelVerify, TRUE,
  184.                                     GA_TabCycle, TRUE,
  185.                                     STRINGA_MaxChars, 48,
  186.                                     STRINGA_TextVal, "",
  187.                                 StringEnd,
  188.                                 CHILD_Label, LabelObject, LABEL_Text,"Address 1", LabelEnd,
  189.  
  190.                                 LAYOUT_AddChild, gadgets[GID_ADD2] = StringObject,
  191.                                     GA_ID, GID_ADD2,
  192.                                     GA_RelVerify, TRUE,
  193.                                     GA_TabCycle, TRUE,
  194.                                     STRINGA_MaxChars, 48,
  195.                                     STRINGA_TextVal, "",
  196.                                 StringEnd,
  197.                                 CHILD_Label, LabelObject, LABEL_Text,"Address 2", LabelEnd,
  198.  
  199.                                 LAYOUT_AddChild, gadgets[GID_ALIGN2] = HGroupObject,
  200.                                     LAYOUT_AddChild, gadgets[GID_CITY] = StringObject,
  201.                                         GA_ID, GID_CITY,
  202.                                         GA_RelVerify, TRUE,
  203.                                         GA_TabCycle, TRUE,
  204.                                         STRINGA_MaxChars, 48,
  205.                                         STRINGA_TextVal, "",
  206.                                     StringEnd,
  207.                                     CHILD_Label, LabelObject, LABEL_Text,"City", LabelEnd,
  208.                                     CHILD_WeightedWidth, 100,
  209.  
  210.                                     LAYOUT_AddChild, gadgets[GID_STATE] = StringObject,
  211.                                         GA_ID, GID_STATE,
  212.                                         GA_RelVerify, TRUE,
  213.                                         GA_TabCycle, TRUE,
  214.                                         STRINGA_MaxChars, 48,
  215.                                         STRINGA_TextVal, "",
  216.                                     StringEnd,
  217.                                     CHILD_Label, LabelObject, LABEL_Text,"State", LabelEnd,
  218.                                     CHILD_WeightedWidth, 75,
  219.  
  220.                                     LAYOUT_AddChild, gadgets[GID_ZIPCODE] = StringObject,
  221.                                         GA_ID, GID_ZIPCODE,
  222.                                         GA_RelVerify, TRUE,
  223.                                         GA_TabCycle, TRUE,
  224.                                         STRINGA_MaxChars, 24,
  225.                                         STRINGA_TextVal, "",
  226.                                     StringEnd,
  227.                                     CHILD_Label, LabelObject, LABEL_Text,"ZipCode", LabelEnd,
  228.                                     CHILD_WeightedWidth, 25,
  229.                                 LayoutEnd,
  230.                                 CHILD_WeightedHeight, 0,
  231.  
  232.                                 LAYOUT_AddChild, gadgets[GID_ALIGN3] = HGroupObject,
  233.                                     LAYOUT_BevelStyle, BVS_SBAR_VERT,
  234.                                     LAYOUT_TopSpacing, 2,
  235.  
  236.                                     LAYOUT_AddChild, gadgets[GID_PHONE] = StringObject,
  237.                                         GA_ID, GID_PHONE,
  238.                                         GA_RelVerify, TRUE,
  239.                                         GA_TabCycle, TRUE,
  240.                                         STRINGA_MaxChars, 48,
  241.                                         STRINGA_TextVal, "",
  242.                                     StringEnd,
  243.                                     CHILD_Label, LabelObject, LABEL_Text,"Phone", LabelEnd,
  244.  
  245.                                     LAYOUT_AddChild, gadgets[GID_FAX] = StringObject,
  246.                                         GA_ID, GID_FAX,
  247.                                         GA_RelVerify, TRUE,
  248.                                         GA_TabCycle, TRUE,
  249.                                         STRINGA_MaxChars, 48,
  250.                                         STRINGA_TextVal, "",
  251.                                     StringEnd,
  252.                                     CHILD_Label, LabelObject, LABEL_Text,"Fax", LabelEnd,
  253.                                 LayoutEnd,
  254.                                 CHILD_WeightedHeight, 0,
  255.                             LayoutEnd,
  256.  
  257.                             PAGE_Add, gadgets[GID_PAGELAY2] = VGroupObject,
  258.                                 LAYOUT_SpaceOuter, TRUE,
  259.                                 LAYOUT_SpaceInner, TRUE,
  260.  
  261.                                 LAYOUT_AddChild, HGroupObject,
  262.                                     LAYOUT_SpaceInner, TRUE,
  263.                                     // customer
  264.                                     LAYOUT_AddChild, gadgets[GID_CUSTOMERS] = ListBrowserObject,
  265.                                         GA_ID, GID_CUSTOMERS,
  266.                                         GA_RelVerify, TRUE,
  267.                                         LISTBROWSER_Labels, NULL,
  268.                                         LISTBROWSER_ShowSelected, TRUE,
  269.                                         LISTBROWSER_HorizontalProp, TRUE,
  270.                                     ListBrowserEnd,
  271.                                     CHILD_WeightedWidth, 30,
  272.  
  273.                                     LAYOUT_AddChild, VGroupObject,
  274.                                         LAYOUT_SpaceInner, TRUE,
  275.                                         // orders
  276.                                         LAYOUT_AddChild, gadgets[GID_ORDERS] = ListBrowserObject,
  277.                                             GA_ID, GID_ORDERS,
  278.                                             GA_RelVerify, TRUE,
  279.                                             LISTBROWSER_Labels, NULL,
  280.                                             LISTBROWSER_ShowSelected, TRUE,
  281.                                             LISTBROWSER_HorizontalProp, TRUE,
  282.                                         ListBrowserEnd,
  283.                                         // details
  284.                                         LAYOUT_AddChild, gadgets[GID_DETAILS] = ListBrowserObject,
  285.                                             GA_ID, GID_DETAILS,
  286.                                             GA_RelVerify, TRUE,
  287.                                             LISTBROWSER_Labels, NULL,
  288.                                             LISTBROWSER_ShowSelected, TRUE,
  289.                                             LISTBROWSER_HorizontalProp, TRUE,
  290.                                         ListBrowserEnd,
  291.                                     LayoutEnd,
  292.                                     CHILD_WeightedWidth, 70,
  293.                                 LayoutEnd,
  294.  
  295.                                 LAYOUT_AddChild, HGroupObject,
  296.                                     LAYOUT_AddChild, gadgets[GID_NEWORD] = ButtonObject,
  297.                                         GA_ID, GID_NEWORD,
  298.                                         GA_RelVerify, TRUE,
  299.                                         GA_Text, "_New Order",
  300.                                     ButtonEnd,
  301.  
  302.                                     LAYOUT_AddChild, gadgets[GID_EDITORD] = ButtonObject,
  303.                                         GA_ID, GID_EDITORD,
  304.                                         GA_RelVerify, TRUE,
  305.                                         GA_Text, "_Edit Order",
  306.                                     ButtonEnd,
  307.  
  308.                                     LAYOUT_AddChild, gadgets[GID_DELORD] = ButtonObject,
  309.                                         GA_ID, GID_DELORD,
  310.                                         GA_RelVerify, TRUE,
  311.                                         GA_Text, "_Delete Order",
  312.                                     ButtonEnd,
  313.  
  314.                                 LayoutEnd,
  315.                                 CHILD_WeightedHeight, 0,
  316.  
  317.                             LayoutEnd,
  318.  
  319.                         PageEnd,
  320.  
  321.                     ClickTabEnd,
  322.  
  323.                     LAYOUT_AddChild, ButtonObject,
  324.                         GA_ID, GID_QUIT,
  325.                         GA_RelVerify, TRUE,
  326.                         GA_Text,"_Quit",
  327.                     ButtonEnd,
  328.                     CHILD_WeightedHeight, 0,
  329.  
  330.                 EndGroup,
  331.             EndWindow;
  332.  
  333.               /*  Object creation sucessful?
  334.                */
  335.             if (objects[OID_MAIN])
  336.             {
  337.                 /* Set up inter-group label pagement.
  338.                  */
  339.                 SetAttrs( gadgets[GID_PAGELAY1], LAYOUT_AlignLabels,  gadgets[GID_ALIGN1], TAG_DONE);
  340.                 SetAttrs( gadgets[GID_ALIGN1], LAYOUT_AlignLabels, gadgets[GID_ALIGN2], TAG_DONE);
  341.                 SetAttrs( gadgets[GID_ALIGN2], LAYOUT_AlignLabels, gadgets[GID_ALIGN3], TAG_DONE);
  342.  
  343.                 /*  Open the window.
  344.                  */
  345.                 if (windows[WID_MAIN] = (struct Window *) CA_OpenWindow(objects[OID_MAIN]))
  346.                 {
  347.                     ULONG wait, signal, app = (1L << AppPort->mp_SigBit);
  348.                     ULONG done = FALSE;
  349.                     ULONG result;
  350.                     UWORD code;
  351.  
  352.                      /* Obtain the window wait signal mask.
  353.                      */
  354.                     GetAttr(WINDOW_SigMask, objects[OID_MAIN], &signal);
  355.  
  356.                     /* Activate the first string gadget!
  357.                      */
  358. //                    ActivateLayoutGadget( gadgets[GID_MAIN], windows[WID_MAIN], NULL, gadgets[GID_COMPANY] );
  359.  
  360.                     /* Input Event Loop
  361.                      */
  362.                     while (!done)
  363.                     {
  364.                         wait = Wait( signal | SIGBREAKF_CTRL_C | app );
  365.  
  366.                         if ( wait & SIGBREAKF_CTRL_C )
  367.                         {
  368.                             done = TRUE;
  369.                         }
  370.                         else
  371.                         {
  372.                             while ( (result = CA_HandleInput(objects[OID_MAIN], &code) ) != WMHI_LASTMSG )
  373.                             {
  374.                                 switch (result & WMHI_CLASSMASK)
  375.                                 {
  376.                                     case WMHI_CLOSEWINDOW:
  377.                                         windows[WID_MAIN] = NULL;
  378.                                         done = TRUE;
  379.                                         break;
  380.  
  381.                                     case WMHI_GADGETUP:
  382.                                         switch (result & WMHI_GADGETMASK)
  383.                                         {
  384.                                             case GID_COMPANY:
  385.                                             //    printf( "Company: %s\n", ((struct StringInfo *)(gadgets[GID_COMPANY]->SpecialInfo))->Buffer);
  386.                                                 break;
  387.  
  388.                                             case GID_QUIT:
  389.                                                 done = TRUE;
  390.                                                 break;
  391.                                         }
  392.                                         break;
  393.  
  394.                                     case WMHI_ICONIFY:
  395.                                         CA_Iconify(objects[OID_MAIN]);
  396.                                         windows[WID_MAIN] = NULL;
  397.                                         break;
  398.  
  399.                                     case WMHI_UNICONIFY:
  400.                                         windows[WID_MAIN] = (struct Window *) CA_OpenWindow(objects[OID_MAIN]);
  401.  
  402.                                         if (windows[WID_MAIN])
  403.                                         {
  404.                                             GetAttr(WINDOW_SigMask, objects[OID_MAIN], &signal);
  405.                                         }
  406.                                         else
  407.                                         {
  408.                                             done = TRUE;    // error re-opening window!
  409.                                         }
  410.                                          break;
  411.                                 }
  412.                             }
  413.                         }
  414.                     }
  415.                 }
  416.  
  417.                 /* Disposing of the window object will also close the window if it is
  418.                  * already opened, and it will dispose of the layout object attached to it.
  419.                  */
  420.                 DisposeObject(objects[OID_MAIN]);
  421.             }
  422.  
  423.             /* Free the click tab label list.
  424.              */ 
  425.             FreeClickTabs(tablabels);
  426.         }
  427.  
  428.         /* close/free the application port.
  429.          */
  430.         DeleteMsgPort(AppPort);
  431.     }
  432.  
  433.     return(0);
  434. }
  435.